// interrupt test
jmp main;

// interrupt routine
interrupt:
  irmov 'i',%ra;
  out %ra,1;
  irmov 'n',%rb;
  out %rb,1;
  irmov 't',%rc;
  out %rc,1;
  irmov 'e',%rd;
  out %rd,1;
  irmov 'r',%ra;
  out %ra,1;
  irmov 'r',%ra;
  out %ra,1;
  irmov 'u',%ra;
  out %ra,1;
  irmov 'p',%rb;
  out %rb,1;
  irmov 't',%rc;
  out %rc,1;
  iret;

// main func
main:
  irmov 0x100, %sp;	// %sp is necessery for int and iret.
  irmov interrupt, %ih;

  // set IF bit
  irmov 0x200, %rb;
  or %rb, %flags;
  
  int 0x40;	// timer interruption

  // set timer
  irmov 3, %ra;
  out %ra, 4;

loop:
  jmp loop;
  halt;

